Client memory arrangements have been provided which conceptually expand the amount of secondary storage, i.e., the number of addressable storage locations that are available in secondary storage of a typical computer system. The typical computer system includes a processor, a memory and an input/output system. Information including data and instructions for processing data are stored in memory in a plurality of addressable storage locations. The processor stores data to and retrieves data from memory and processes the data accordingly. The main, physical memory of the computer system will normally include a primary, volatile storage memory, such as a random access memory (RAM) and a secondary, multiple read/write, nonvolatile storage medium, such as a tape or disk. The storage capability of the computer system is typically limited to the amount of physical data storage locations available in such memory.
Client memory permits processing of an application by providing an auxiliary storage medium that can be addressed as though it were part of the physical secondary memory. Flash memories can be used as such auxiliary storage mediums. Flash memories are nonvolatile memories similar in functionality and performance to an electronically erasable and programmable read-only memory (EEPROM). Consequently, they are write once, read many type memories. However, flash memories allow an in-circuit, programmable, operation to erase only certain blocks of memory at a time or the entire memory at once.
In a client memory arrangement, a client address space having a plurality of client addressable locations, each identified by a client address, is provided in an auxiliary storage medium. The client addresses in the client address space can be translated into physical addresses of physical storage locations in the auxiliary storage medium. When flash memory is used as the auxiliary storage medium, the client address space is maintained on the flash memory device. Data can then be transferred to the flash memory device under control of an operating system program from storage locations in the physical secondary memory, and vice versa. However, flash memories are not compatible with typical existing operating system programs, because flash memories are not multiple read/write memories, i.e., data cannot be written to an area of flash memory in which data has previously been written, unless a larger area is first erased.
Accordingly, there is a need for a method and apparatus for allocating client memory storage using a flash memory that is addressed as though it were a secondary, multiple read/write, non-volatile storage medium. Such a method and apparatus should permit flash memory to be written and read multiple times during client memory allocation without any knowledge of or intervention by a user. In addition, the method and apparatus should permit large portions of data to be written and read from flash memory at one time. The present invention is directed to providing such a method and apparatus.